package com.singzi.leetcode.N500;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class T0438 {
    public static void main(String[] args) {
        Solution0438 solution0438 = new Solution0438();
    }
}
//class Solution0438 {
//    private List<Integer> list;
//    public List<Integer> findAnagrams(String s, String p) {
//        list = new ArrayList<>();
//        int []letters = new int[26];//统计p各字母的出现次数
//        for(int i = 0;i < p.length();i++){
//            letters[p.charAt(i) - 'a']++;
//        }
//        //找出第一个满足的坐标
//        int index = 0;
//        while (index <= s.length()-p.length()){
//            if(isAnagram(letters, s.substring(index, index+p.length()))) {
//                list.add(index);
//                break;
//            }
//            index++;
//        }
//        while (index <= s.length()-p.length()){
//            while(index < s.length()-p.length() && isAnagram(letters, s.substring(index+1, index+p.length()+1))){
//                index++;
//                list.add(index);
//            }
//            index++;
//        }
//
//        return list;
//    }
//
//    private boolean isAnagram(int[] arr, String substring) {
//        int []letters = new int[arr.length];
//        System.arraycopy(arr, 0, letters, 0, arr.length);
//        for(int i = 0;i < substring.length();i++){
//            letters[substring.charAt(i) - 'a']--;
//            if(letters[substring.charAt(i) - 'a'] < 0) return false;
//        }
//        return true;
//    }
//
//}
class Solution0438 {
    private List<Integer> list;
    public List<Integer> findAnagrams(String s, String p) {
        int pLength = p.length(), sLength = s.length();
        list = new ArrayList<>();
        int []letters = new int[26];//统计p各字母的出现次数
        for(int i = 0;i < p.length();i++){
            letters[p.charAt(i) - 'a']++;
        }
        //找出第一个满足的坐标
        int index = 0;
        for(int i = 0; i < pLength;i++){
            letters[s.charAt(i) - 'a']--;
        }
        while (index <= s.length()-pLength){
            if(isAnagram(letters)){
                list.add(index);
                break;
            }
            if(index < sLength - pLength) {
                letters[s.charAt(index) - 'a']--;
                letters[s.charAt(index + pLength) - 'a']++;
            }
            index++;
        }
        while (index <= sLength-pLength){

        }


        return list;
    }
    private boolean isAnagram(int[] arr) {
        for(Integer num:arr){
            if(num < 0) return false;
        }
        return true;
    }

}